﻿using System;
using System.Collections.Generic;
using System.Text;

namespace DNFImagePacks2Manager.Helpers
{
    public class ByteHelper
    {
        public static string Bytes2String(byte[] bytes)
        {
            return Encoding.UTF8.GetString(bytes).TrimEnd('\0');
        }

        public static string Bytes2AsciiString(byte[] bytes)
        {
            return Encoding.ASCII.GetString(bytes).TrimEnd('\0');
        }

        public static int Bytes2Int(byte[] bytes)
        {
            return BitConverter.ToInt32(bytes, 0);
        }

        public static byte[] Int2Bytes(int value)
        {
            return BitConverter.GetBytes(value);
        }

        public static byte[] IntList2Bytes(List<int> list)
        {
            List<byte> bytes = [];
            foreach (var item in list)
            {
                bytes.AddRange(Int2Bytes(item));
            }
            return [.. bytes];
        }

        public static bool BytesEuqals(byte[] a, byte[] b)
        {

            if (ReferenceEquals(a, b)) return true;
            if (a == null || b == null || a.Length != b.Length) return false;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i] != b[i])
                    return false;
            }
            return true;
        }

        public static string Bytes2ByteString(byte[] bytes)
        {
            if (bytes == null || bytes.Length == 0)
                return string.Empty;

            Array.Reverse(bytes);

            StringBuilder sb = new StringBuilder(bytes.Length * 2);
            foreach (byte b in bytes)
            {
                sb.AppendFormat("{0:X2}", b);
            }

            return sb.ToString();
        }
    }
}
